////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) Microsoft Corporation.  All rights reserved.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "Core.h"

////////////////////////////////////////////////////////////////////////////////////////////////////

bool CLR_RT_MemoryRange::LimitToRange( CLR_RT_MemoryRange& filtered, UINT8* address, UINT32 length ) const
{
    NATIVE_PROFILE_CLR_CORE();
    UINT8* addressEnd  = address    + length;
    UINT8* locationEnd = m_location + m_size;

    if(address    < m_location ) address    = m_location;
    if(addressEnd > locationEnd) addressEnd = locationEnd;

    if(addressEnd < address) addressEnd = address;

    filtered.m_location =          address;
    filtered.m_size     = (UINT32)(addressEnd - address);

    return filtered.m_size > 0;
}
